﻿<?xml version="1.0" encoding="utf-8" ?>

<Rules FriendlyName="Bovespa Design Rules">

  <Rule TypeName="BovespaRemoveEmptyMethods" Category="BovespaRemoveEmptyMethods" CheckId="BOV1001">
    <Name>Check BovespaRemoveEmptyMethods</Name>
    <Description>Check BovespaRemoveEmptyMethods</Description>
    <Url></Url>
    <Resolution Name="RemoveEmptyMethodsResolution">Remove unnecessary empty methods: {0}</Resolution>
    <Resolution Name="RemoveEmptyPropertiesResolution">Remove unnecessary empty properties: {0}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>

  <Rule TypeName="BovespaDoNotCreateEmptyInterface" Category="BovespaDoNotCreateEmptyInterface" CheckId="BOV1002">
    <Name>Check BovespaDoNotCreateEmptyInterface</Name>
    <Description>Check BovespaDoNotCreateEmptyInterface</Description>
    <Url></Url>
    <Resolution Name="DoNotCreateEmptyInterfaceResolution">Do not create interfaces without members. Intefarce: {0}. Namespace: {1}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>

  <Rule TypeName="BovespaClassMustHaveDefaultConstructor" Category="BovespaClassMustHaveDefaultConstructor" CheckId="BOV1005">
    <Name>Check BovespaClassMustHaveDefaultConstructor</Name>
    <Description>Check BovespaClassMustHaveDefaultConstructor</Description>
    <Url></Url>
    <Resolution Name="ClassMustHaveDefaultConstructorResolution">If the class has more than one constructor, the default constructor needs to be explicitly implemented. Class: {0}. Namespace: {1}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>
  
  <Rule TypeName="BovespaDoNotCreateSingleValueEnum" Category="BovespaDoNotCreateSingleValueEnum" CheckId="BOV1009">
    <Name>Check BovespaDoNotCreateSingleValueEnum</Name>
    <Description>Check BovespaDoNotCreateSingleValueEnum</Description>
    <Url></Url>
    <Resolution Name="DoNotCreateSingleValueEnumResolution">Do not create enums containing a single value. Class: {0}. Enum: {1}. Namespace: {2}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>
  
  <Rule TypeName="BovespaAvoidPublicOrProtectedInstanceFields" Category="BovespaAvoidPublicOrProtectedInstanceFields" CheckId="BOV1012">
    <Name>Check BovespaAvoidPublicOrProtectedInstanceFields</Name>
    <Description>Check BovespaAvoidPublicOrProtectedInstanceFields</Description>
    <Url></Url>
    <Resolution Name="AvoidPublicOrProtectedInstanceFieldsResolution">Instance fields should be private. Class: {0}. Namespace: {1}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>

  <Rule TypeName="BovespaAvoidPrivateProperty" Category="BovespaAvoidPrivateProperty" CheckId="BOV1013">
    <Name>Check BovespaAvoidPrivateProperty</Name>
    <Description>Check BovespaAvoidPrivateProperty</Description>
    <Url></Url>
    <Resolution Name="AvoidPrivatePropertyResolution">All the properties must be public. Class: {0}. Property: {1}. Namespace: {2}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>
  
  <Rule TypeName="BovespaServiceNamesMustMatchInterfaceNames" Category="BovespaAvoidPrivateProperty" CheckId="BOV1303">
    <Name>Check BovespaServiceNamesMustMatchInterfaceNames</Name>
    <Description>Check BovespaServiceNamesMustMatchInterfaceNames</Description>
    <Url></Url>
    <Resolution Name="ServiceNamesMustMatchInterfaceNamesResolution">Service componentes have to match the Class-Interface pairs: Class: {0}. Interface: {1}. Namespace: {2}</Resolution>
    <MessageLevel Certainty="100">Error</MessageLevel>
    <Email></Email>
    <FixCategories>Breaking</FixCategories>
    <Owner>BMFBovespa</Owner>
  </Rule>
  
</Rules>